package com.softeem.score.manager.mapper;

import com.softeem.score.model.dto.CourseDto;
import com.softeem.score.model.vo.educational.CourseVo;
import com.softeem.score.model.vo.educational.GradeCompontWeightVo;
import com.softeem.score.model.vo.educational.SchedulesVo;
import com.softeem.score.model.vo.school.MapVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * Mapper 接口
 * </p>
 *
 * @author zhu
 * @since 2024-02-14
 */
public interface CourseMapper {

    List<CourseVo> findByPage(CourseDto courseDto);

    List<MapVo> findAll();

    void saveCourse(CourseVo courseVo);

    Integer deleteById(Long courseId);

    Integer updateCourse(CourseVo courseVo);

    void saveCourseTeacher(@Param("courseId") Long courseId, @Param("teacherIds") List<Long> teacherIds);

    void deleteCourseTeacher(@Param("courseId") Long courseId);

    List<MapVo> selectAllGradeComponent();

    List<GradeCompontWeightVo> selectGradeComponentByCourseId(@Param("courseId") Long courseId);

    List<MapVo> findALlByCollegeId(@Param("collegeId") Long collegeId, @Param("category") Integer category, @Param("nature") Integer nature);

    List<Long> selectTeacherIdsByCourseId(@Param("courseId") Long courseId);
    
    List<MapVo> findCourseById(@Param("courseIdList") List<Long> courseIdList);

    List<MapVo> getTeachersByCourseId(@Param("courseId") Long courseId);

    List<CourseVo.CourseTeacher> selectCourseTeacherByCourseId(@Param("courseId") Long courseId);

    List<CourseVo> findCourseInfoByTeacherCode(@Param("teacherCode") String teacherCode);

    List<SchedulesVo> findSchedulesVoByClassId(@Param("classesId") Long classesId);

    List<SchedulesVo> findSchedulesVoByStudentNumber(@Param("studentNumber") String studentNumber);
}
